经典线性回归只适用于特征 $X$ 与响应变量 $Y$ 满足线性关系的情况, 但实际上有很多数据并不完全服从这一规律。例如, 一个人缺钙的时候, 补钙可以提高其健康程度, 但补钙太多对身体反而会有危害.人体的健康程度随着补销量的增加表现为先提高后下降的关系, 并不是线性关系, 线性回归对这类数据并不适用, Stone 于 1985 年提出的加性模型和 Hastie于1990年提出的广义加性模型可用于处理这类问题。加性 (Addictive Model) 与广义加性模型 (Generalized Addictive Model, GAM) 的关系类似于线性回归与广义线性模型的关系, 当连接函数 $g(u)=u$ 时, 广义加性模型就是加性模型, 所以可以把加性模型视作广义加性模型的一个特例,下面就来介绍 广义加性模型的相关知识。
在使用模型对数据进行分析之前, 可以先画出 $X$ 与 $Y$ 的散点图来查看二者之间的关系, 当 $X$ 与 $Y$ 存在非线性关系, 但又难以直接通过图像确定二者之间的非线性关系的具体形式 时, 广义加性模型提供了一种替代方法, 它允许我们在预先不确定 $X$ 与 $Y$ 之间关系的情况下, 使用非线性平滑项来拟合模型, 如下: $$ g(E(Y \mid X))=s_0+\sum_{j=1}^d s_j\left(X_j\right) $$ 其中, $s_0$ 表示截距项, $s_j(\bullet)(j=1,2, \cdots, d)$ 是非参光滑函数, $s_j(\cdot)$ 通常取光滑样条函数、核函数或局部回归光滑函数; $g(\cdot)$ 称为连接函数, 满足平滑可逆的条件。例如, 当 $Y$ 为离散变量且服从泊松分布, 取连接函数 $g(E(Y \mid X))=\ln Y$ 时, 学习合适的形式使模型的加性部分输出值 $s_0+\sum_{j=1}^d s_j\left(X_j\right)$, 尽可能地接近响应变量 $Y$ 经连接函数转化后的值 $\ln Y$, 即 $\ln Y=s_0+\sum_{j=1}^d s_j\left(X_j\right)$ 。
广义加性模型通过连接函数使模型变得更灵活且具有普适性。在实际应用中, 很多时候并非每一个 $X_j$ 与 $Y$ 都是非线性关系, 如果每个特征都用光滑函数 $s_j(\bullet)$ 拟合, 那么在高维数据下将会出现计算量大、过拟合等问题, 这时将某些 $X_j$ 与 $Y$ 的关系简化成线性形式会更好。于是就出现了半参广义加性模型 (Semi-parametric Generalized Additive Model) : $$ g(E(Y \mid X))=s_0+\sum_{m=a}^p X_m W+\sum_{l=b}^q s_l\left(X_l\right), \quad m \neq l $$ 其中, $a$ 到 $p$ 代表线性特征的序号, $b$ 到 $q$ 代表非线性特征的序号。该式将 $X_j$ 与 $Y$ 的线性和非线性关系都考虑了进来, 因此其适用于更广泛的数据情况, 比广义加性模型更常用。
当广义加性模型的连接函数 $u=g(u)$ 时, 广义加性模型退化为加性模型: $$ E(Y \mid X)=s_0+\sum_{j=1}^d s_j\left(X_j\right) $$ 可以把加性模型视作广义加性模型的一个特例, 由于广义加性模型的估计方法是基于加性模型的估计方法改进而来的, 因此在正式介绍广义加性模型的估计方法之前, 我们需要先介绍加性模型的估计方法。
我们可以计算第 $k$ 项光滑函数与响应变量 $Y$ 之间的残差 $R_k$, 如下: $$ \begin{aligned} R_k &=Y-s_0-\sum_{j \neq k} s_j\left(X_j\right), R_k \approx s_k\left(X_k\right), E\left(R_k \mid X_k\right) \\ &=s_k\left(X_k\right) \end{aligned} $$ 所以在给定除第 $k$ 项光滑函数以外其他项的估计值 $\hat{s}_j\left(X_j\right)$ $(j \neq k)$ 时, 可以依据式估计第 $k$ 项光滑函数 $s_k\left(X_k\right)$, 再使用迭代的方法逐轮估计 $s_k\left(X_k\right)$, 直至达到停止达代的条件,这一过程称为 Backfitting 算法。在加性模型中, Backfitting算管 的具体实现过程如下:
Initialization: $s_0=E(Y), s_1^0=s_2^0=\cdots=s_d^0=0, t=0$ Iterate: $t \leftarrow t+1$ for $j=1$ to $d$ do: $$ \begin{aligned} &R_j=Y-s_0-\sum_{k=1}^{j-1} s_k^t\left(X_k\right)-\sum_{k=j+1}^d s_k^{t-1}\left(X_k\right) \\ &s_j^t\left(X_j\right)=E\left(R_j \mid X_j\right) \end{aligned} $$ Until: $\operatorname{RSS}=\frac{1}{n} \sum\left(y-s_0+\sum_{j=1}^d s_j^{\prime}\left(X_j\right)\right)^2<\varepsilon$
在 Backfitting 算法中, $s_j^t\left(X_j\right)$ 右上角的 $t$ 表示当前迭代到第 $t$ 轮; $\varepsilon$ 表示收敛的临界值。
广义加性模型可以看作是加性模型的扩展, 其估计方法也是在加性模型的估计方法 (Backfitting 算法) 的基础上发展而 的。广义加性模型通过 Local Scoring 算法进行估计, Local Scoring 算法包括外部和内部两个部分:外部使用 Fisher 积分 算法来估计连接函数 $g(\cdot)$, 内部使用 Backfitting 算法来估计光滑函数 $s_j(\cdot)$ 。
广义加性模型在解释性方面具有较好的优势。例如, 我们使用广义加性模型对某个数据进行分析, 这里使用了两个特征 $\left(X_1\right.$ 和 $\left.X_2\right)$ 。 首先, 可以画出 $X_1 、 X_2$ 与 $Y$ 之间的图像, 以初步确定 $X_1 、 X_2$ 与 $Y$ 的关系是否存在非线性的形式。
我们得到的半参加性模型结果为 $Y=$ 2. $51+0.27 X_1+s_2\left(X_2\right)$ 。该模型结果表示: (1) $X_1$ 每增加 1 个 掸位, $Y$ 的值将增加 $0.27$ 个单位; (2) $X_2$ 与 $Y$ 的关系由非参函 数 $s_2\left(X_2\right)$ 来刻画, 难以给出具体的数学表达式。随着 $X_2$ 的增加, $Y$ 呈现先轻微减少、再增加、然后再减少的趋势。
这一案例很好地说明了广义加性模型在解释性方面的优势, 它可以发现 $X$ 与 $Y$ 之间的非线性关系, 我们可以从中得知在 $X$ 的不同取值下 $Y$ 的变化规律, 再结合数据的实际意义对模型结果进行业务解读。
广义加性模型是广义线性模型的推广,其优势主要体现在以下两个方面:(1)与广义线性模型相比, 广义加性模型不需要严格规定 $X$ 与 $Y$ 的参数依存关系, 是处理非线性数据的一种灵活且有效的方法; (2) $X$ 对 $Y$ 的影响效应以加性的方式呈现, 模型的解释性比较强。
广义加性模型的不足之处主要体现在以下两个方面:(1) 由 于 $X$ 与 $Y$ 之间的关系是用非参函数来刻画的, 因此求解过程计算量较大; (2)与其他常见的机器学习模型相比, 广义加性模 型的精度可能较低。
参考资料: